package com.ebao.service.base;

import java.io.Serializable;
import java.util.List;

import com.ebao.util.PageResult;

/**
 * @author snow
 * @date 2012-6-23
 * @param <P>
 */
public interface ICrudService<P> {
	
	/**
	 * 保存新对象
	 */
	public void save(P obj);
	
	/**
	 * 更新对象
	 */
	public void update(P obj);
	
	/**
	 * 删除对象
	 */
	public void delete(P obj);
	
	/**
	 * 根据Id删除对象
	 */
	public void deleteById(Serializable id);
	
	/**
	 * 根据Id查询对象
	 */
	public P getById(Serializable id);
	
	/**
	 * 根据查询语句得到PO对象
	 */
	public P getByJpql(String jpql, Object...objs);
	
	/**
	 * 分页查找PO对象集合
	 */
	public List<P> getByJpqlAfterWhere(String jpql, int currentPage, int pageSize, Object... objs);
	
	/**
	 * 分页查找，封装返回
	 */
	public PageResult<P> getPageByJpqlAfterWhere(String jpql, int currentPage, int pageSize, Object... objs);
	
	/**
	 * 执行更新操作
	 */
	public int executeJpql(String jpql, Object... objs);
	
	/**
	 * 查询对象个数
	 */
	public int getCount(String jpql, Object... objs);
	
}
